package com.boot.system.service;

import com.boot.common.result.Result;
import com.boot.system.entity.SysRole;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;

import java.util.List;
import java.util.Map;

public interface RoleService extends IService<SysRole> {

    /**
     * 角色分页
     * @param queryParam 查询条件
     * @return 列表
     */
    Page<SysRole> getRolePage(Map<String, Object> queryParam);

    /**
     * 角色列表（前端选项，根据当前用户角色筛选）
     * @return 列表
     */
    List<Map<String, String>> getRoleList();

    /**
     * 新增角色
     * @param dataParam 角色表单
     * @return 状态
     */
    Result<?> addRole(Map<String, Object> dataParam);

    /**
     * 修改角色
     * @param dataParam 角色表单
     * @return 状态
     */
    Result<?> updateRole(Map<String, Object> dataParam);

    /**
     * 删除角色
     * @param ids 多个以英文逗号(,)分割
     * @return 状态
     */
    boolean deleteRole(String ids);

    /**
     * 获取列表（缓存）
     * @return 列表
     */
    List<SysRole> getCacheList();

    /**
     * 获取（缓存）
     * @param code 角色编码
     * @return 值
     */
    SysRole getCache(String code);

    /**
     * 设置（缓存）
     * @param id 角色ID
     */
    void setCache(Long id);

    /**
     * 删除（缓存）
     * @param ids ID集合
     */
    void deleteCache(List<Long> ids);

}
